package pck_tramitedocu.pck_src.pck_facade;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import net.sf.jasperreports.engine.JasperPrint;
import pck_tramitedocu.pck_src.pck_business.Itf_MailBusiness;
import pck_tramitedocu.pck_src.pck_business.Itf_business_documento;
import pck_tramitedocu.pck_src.pck_business.Itf_business_error;
import pck_tramitedocu.pck_src.pck_business.Itf_business_tablas;
import pck_tramitedocu.pck_src.pck_business.Itf_business_tipo;
import pck_tramitedocu.pck_src.pck_business.itf_business_usuario;
import pck_tramitedocu.pck_src.pck_dao.Cls_dao_Mybatis_Jdbc_Connection;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Bandeja_Documento;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Bandeja_destinatarios_derivacion;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Documento_Historial;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Documento_Tipo;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Email;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Empresa;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Fechas;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Motivo_Deriva;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Nombre_Anio;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Notificaciones;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Posibilidad;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Trabajador;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Unidad_Organizativa;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Usuario_Tipo;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Visto;
import pck_tramitedocu.pck_src.pck_pojos.Cls_documento;
import pck_tramitedocu.pck_src.pck_pojos.TramiteDocuException;

public class cls_facade implements itf_facade {

    private itf_business_usuario businessUsuarioInterface;
    private Itf_business_tipo itf_business_tipo;
    private Itf_business_documento businessDocumentoInterface;
    private Itf_MailBusiness itf_MailBusiness;
    private Itf_business_tablas itf_business_tablas;
    private Cls_dao_Mybatis_Jdbc_Connection cls_dao_Mybatis_Jdbc_Connection;
    private Itf_business_error itf_business_error;

    public void setItf_business_tablas(Itf_business_tablas itf_business_tablas) {
        this.itf_business_tablas = itf_business_tablas;
    }

    public void setCls_dao_Mybatis_Jdbc_Connection(Cls_dao_Mybatis_Jdbc_Connection cls_dao_Mybatis_Jdbc_Connection) {
        this.cls_dao_Mybatis_Jdbc_Connection = cls_dao_Mybatis_Jdbc_Connection;
    }

    public DataSource getConectionSistema() {
        return this.cls_dao_Mybatis_Jdbc_Connection.getDataSource();
    }

    public Object validarUsuario(Map<String, Object> map) {
        return this.businessUsuarioInterface.validarUsuario(map);
    }

    public boolean agregarUsuario(Cls_Trabajador usuario) {
        return this.businessUsuarioInterface.agregarUsuario(usuario);
    }

    public boolean actualizarUsuario(Cls_Trabajador usuario) {
        return this.businessUsuarioInterface.actualizarUsuario(usuario);
    }

    public List obtenerMenuUsuario(String codigo) {
        return this.businessUsuarioInterface.obtenerMenuUsuario(codigo);
    }

    public boolean grabarMenuUsuario(String codigo, List menu) {
        return this.businessUsuarioInterface.grabarMenuUsuario(codigo, menu);
    }

    public ArrayList<Cls_Trabajador> obtenerTodosUsuariosFacade(Map<String, String> map) {
        return this.businessUsuarioInterface.obtenerTodosUsuariosBusiness(map);
    }

    public itf_business_usuario getBusinessUsuarioInterface() {
        return this.businessUsuarioInterface;
    }

    public void setBusinessUsuarioInterface(itf_business_usuario businessUsuarioInterface) {
        this.businessUsuarioInterface = businessUsuarioInterface;
    }

    public ArrayList<Cls_Trabajador> obtenerTodosUsuariosEpsGrauFacade(Map<String, String> map) {
        return this.businessUsuarioInterface.obtenerTodosUsuariosEpsGrauBusiness(map);
    }
    public ArrayList<Cls_Trabajador> obtenerTrabajadorCargosEpsGrauFacade(Map<String, String> map) {
        return this.businessUsuarioInterface.obtenerTranajadorCargosEpsGrauBusiness(map);
    }
    
    public ArrayList<Cls_Trabajador> obtenerTodosUsuariosParaComisionEpsGrauFacade(Map<String, String> map) {
        return this.businessUsuarioInterface.obtenerTodosUsuariosParaComisionEpsGrauBusiness(map);
    }

    public String agregarDocumentoFacade(Cls_documento documento) throws TramiteDocuException{
        return this.businessDocumentoInterface.agregarDocumentoBusiness(documento);
    }

    public String actualizarDocumentoFacade(Cls_documento documento) throws TramiteDocuException{
        return this.businessDocumentoInterface.actualizarDocumentoBusiness(documento);
    }

    public boolean eliminarDocumentoFacade(String codigo) {
        return this.businessDocumentoInterface.eliminarDocumentoBusiness(codigo);
    }

    public Cls_documento obtenerDocumentoConTodaInformacionFacade(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.obtenerDocumentoConTodaInformacionBusiness(map);
    }

    public ArrayList<Cls_documento> obtenerTodosDocumentoFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.obtenerTodosDocumentoBusiness(map);
    }

    public int obtenerCantidadDeRegistrosFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.obtenerCantidadDeRegistrosBussiness(map);
    }

    public void setBusinessDocumentoInterface(Itf_business_documento businessDocumentoInterface) {
        this.businessDocumentoInterface = businessDocumentoInterface;
    }

    public JasperPrint obtenerDocumentoPrintFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.obtenerDocumentoPrintBusiness(map);
    }

    public int obtenerCantidadTrabajadoresAreaFacade(Map<String, String> map) {
        return this.businessUsuarioInterface.obtenerCantidadTrabajadoresAreaBusiness(map);
    }

    public int puedeImprimirDocumentoFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.puedeImprimirDocumentoBusiness(map);
    }

    public void setItf_business_tipo(Itf_business_tipo itf_business_tipo) {
        this.itf_business_tipo = itf_business_tipo;
    }

    public ArrayList<Cls_Usuario_Tipo> obtenerTipoUsuarioFacade() {
        return this.itf_business_tipo.obtenerTipoUsuarioBusiness();
    }

    public int obteneTipoUsuarioDeTrabajadorFacade(Map<String, String> map) {
        return this.businessUsuarioInterface.obteneTipoUsuarioDeTrabajadorBusiness(map);
    }

    public String obtenerThreeUsuarioFacade(Map<String, Object> map) throws TramiteDocuException {
        return this.itf_business_tipo.obtenerThreeUsuarioBusiness(map);
    }

    public boolean agregarMenuTipoUsuarioDao(Map<String, Object> map) throws TramiteDocuException {
        return this.itf_business_tipo.agregarMenuTipoUsuarioBusiness(map);
    }

    public ArrayList<Cls_Bandeja_Documento> obtenerTodosDocumentoPersonalesFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.obtenerTodosDocumentoPersonalesBusiness(map);
    }

    public int obtenerCantidadDeDocumentosPersonalesFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.obtenerCantidadDeDocumentosPersonalesDao(map);
    }

    public String enviarMensaje(Cls_Email email) throws TramiteDocuException {
        return this.itf_MailBusiness.enviarMensaje(email);
    }

    public ArrayList<Cls_Trabajador> obtenerTodosUsuariosMailFacade(Map<String, String> map) {
        return this.businessUsuarioInterface.obtenerTodosUsuariosMailBusiness(map);
    }

    public void setItf_MailBusiness(Itf_MailBusiness itf_MailBusiness) {
        this.itf_MailBusiness = itf_MailBusiness;
    }

    public ArrayList<Cls_Documento_Tipo> obtenerTipoDocumentoFacade(Map[] map) throws TramiteDocuException {
        return this.itf_business_tipo.obtenerTipoDocumentoBusiness(map);
    }

    public int obtenerCantidadTrabajadoresRrhhFacade(Map<String, String> map) {
        return this.businessUsuarioInterface.obtenerCantidadTrabajadoresRrhhBusiness(map);
    }

    public int obtenerCantidadTrabajadoresMailRrhhFacade(Map<String, String> map) {
        return this.businessUsuarioInterface.obtenerCantidadTrabajadoresMailRrhhBusiness(map);
    }

    public ArrayList<Cls_Motivo_Deriva> obtenerTipoMotivoDerivaFacade() {
        return this.itf_business_tipo.obtenerTipoMotivoDerivaBusiness();
    }

    public String insertarFeriadoFacade(Map<String, Object> fecha) throws TramiteDocuException {
        return this.itf_business_tablas.insertarFeriadoBusiness(fecha);
    }

    public String eliminarFeriadoFacade(Map<String, Object> fecha) throws TramiteDocuException {
        return this.itf_business_tablas.eliminarFeriadoBusiness(fecha);
    }

    public ArrayList<Cls_Fechas> obtenerDiasFeriadosFacade(Map<String, String> map) throws TramiteDocuException {
        return this.itf_business_tablas.obtenerDiasFeriadosBusiness(map);
    }

    public String insertaAnioFacade(Map<String, Object> fecha) throws TramiteDocuException {
        return this.itf_business_tablas.insertaAnioBusiness(fecha);
    }

    public String eliminarAnioFacade(Map<String, Object> fecha) throws TramiteDocuException {
        return this.itf_business_tablas.eliminarAnioBusiness(fecha);
    }

    public String modificarAnioFacade(Map<String, Object> fecha) throws TramiteDocuException {
        return this.itf_business_tablas.modificarAnioBusiness(fecha);
    }

    public ArrayList<Cls_Nombre_Anio> obtenerAniosFacade(Map<String, String> map) throws TramiteDocuException {
        return this.itf_business_tablas.obtenerAniosBusiness(map);
    }

    public int obtenerCantidadAniosFacade() throws TramiteDocuException {
        return this.itf_business_tablas.obtenerCantidadAniosBusiness();
    }

    public int obtenerCantidadDiasFeriadosFacade() throws TramiteDocuException {
        /* 219 */ return this.itf_business_tablas.obtenerCantidadDiasFeriadosBusiness();
    }

    public ArrayList<Cls_Empresa> obtenerEmpresasFacade(Map<String, String> map) throws TramiteDocuException {
        return this.itf_business_tablas.obtenerEmpresasBusiness(map);
    }

    public String insertarEmpresasFacade(Map<String, Object> empresa) throws TramiteDocuException {
        return this.itf_business_tablas.insertarEmpresasBusiness(empresa);
    }

    public String eliminarEmpresasFacade(Map<String, Object> empresa) throws TramiteDocuException {
        return this.itf_business_tablas.eliminarEmpresasBusiness(empresa);
    }

    public String modificarEmpresasFacade(Map<String, Object> empresa) throws TramiteDocuException {
        return this.itf_business_tablas.modificarEmpresasBusiness(empresa);
    }

    public int obtenerCantidadEmpresasFacade(Map<String, String> map) throws TramiteDocuException {
        return this.itf_business_tablas.obtenerCantidadEmpresasBusiness(map);
    }

    public ArrayList<Cls_Unidad_Organizativa> obtenerUnidadesFacade(Map<String, String> map) {
        return this.itf_business_tablas.obtenerUnidadesBusiness(map);
    }

    public int obtenerCantidadUnidadesFacade(Map<String, String> map) {
        return this.itf_business_tablas.obtenerCantidadUnidadesBusiness(map);
    }

    public ArrayList<Cls_Trabajador> obtenerTodosUsuariosParaFirmaEpsGrauFacade(Map<String, String> map) {
        return this.businessUsuarioInterface.obtenerTodosUsuariosParaFirmaEpsGrauBusiness(map);
    }

    public Cls_Bandeja_Documento obtenerDocumentoPersonalBandejaFacade(Map<String, String> map, Cls_Trabajador trabajador) throws TramiteDocuException {
        return this.businessDocumentoInterface.obtenerDocumentoPersonalBandejaBusiness(map, trabajador);
    }

    public String actualizarBandejaDocumentoFacade(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.actualizarBandejaDocumentoBusiness(map);
    }

    public String delegarDocumentoDesdeBandejaFacade(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.delegarDocumentoDesdeBandejaBusiness(map);
    }

    public boolean necesitaGenerarFlashFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.necesitaGenerarFlashBusiness(map);
    }

    public String insertarComisionesFacade(Map<String, Object> mp_fecha) {
        return this.itf_business_tablas.insertarComisionesDao(mp_fecha);
    }

    public String modificarComisionesFacade(Map<String, Object> mp_fecha) {
        return this.itf_business_tablas.modificarComisionesDao(mp_fecha);
    }

    public String agregarDocumentoExtensionFacade(Map<String, Object> mp_extensiones) {
        return this.businessDocumentoInterface.agregarDocumentoExtensionBusiness(mp_extensiones);
    }

    public String agregarUsuarioEnPostgrestFacade(Cls_Trabajador trabajador) {
        return this.businessUsuarioInterface.agregarUsuarioEnPostgrestBusiness(trabajador);
    }

    public String dipararDocumentoDesdeBandejaParaVistoFacade(Map<String, String> map)  throws TramiteDocuException{
        return this.businessDocumentoInterface.dipararDocumentoDesdeBandejaParaVistoBusiness(map);
    }

    public String darVistoDocumentoDesdeBandejaParaRespuestaBusiness(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.darVistoDocumentoDesdeBandejaParaRespuestaBusiness(map);
    }

    public ArrayList<Cls_Documento_Historial> obtenerHistorialDocumentoFacade(Map<String, String> parametros) throws TramiteDocuException{
        return this.businessDocumentoInterface.obtenerHistorialDocumentoBusiness(parametros);
    }
    public  int obtenerCantidadHistorialFacade(Map<String, String> map) throws TramiteDocuException{
        return this.businessDocumentoInterface.obtenerCantidadHistorialBusiness(map);
    }
    public ArrayList<Cls_Visto> obtenerVistoDocumentoFacade(Map<String, Object> documento) throws TramiteDocuException {
        return this.businessDocumentoInterface.obtenerVistoDocumentoBusiness(documento);
    }

    public String cerrarDocumentoFacade(Map<String, Object> documento) {
        return this.businessDocumentoInterface.cerrarDocumentoBusiness(documento);
    }

    public String aprobarDocumentoFacade(Map<String, Object> mp_empresa) throws TramiteDocuException {
        return this.businessDocumentoInterface.aprobarDocumentoBusiness(mp_empresa);
    }

    public String agregarHistorialDocumentoFacade(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.agregarHistorialDocumentoBusiness(map);
    }

    public String reiniciarContadorMensajesBandejaDocumentoFacade(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.reiniciarContadorMensajesBandejaDocumentoBusiness(map);
    }

    public ArrayList<Cls_Notificaciones> obtenerNotificacionesFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.obtenerNotificacionesBusiness(map);
    }

    public String actualizarDocumentoVistoFacade(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.actualizarDocumentoVistoBusiness(map);
    }

    public String dipararDocumentoDesdeBandejaParaVistoRechazadosFacade(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.dipararDocumentoDesdeBandejaParaVistoRechazadosBusiness(map);
    }

    public String darPermisosImprimirFacade(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.darPermisosImprimirBusiness(map);
    }

    public String darPermisosModificarFacade(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.darPermisosModificarBusiness(map);
    }

    public ArrayList<Cls_Trabajador> obtenerTodosJefaturasParaFirmaEpsGrauBusiness(Map<String, String> map) {
        return this.businessUsuarioInterface.obtenerTodosJefaturasParaFirmaEpsGrauBusiness(map);
    }

    public ArrayList<Cls_documento> obtenerTodosDocumentoPersonalesDeAreaFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.obtenerTodosDocumentoPersonalesDeAreaBusiness(map);
    }

    public int obtenerCantidadDeDocumentosPersonalesAreaFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.obtenerCantidadDeDocumentosPersonalesAreaBusiness(map);
    }

    public ArrayList<Cls_Bandeja_destinatarios_derivacion> obtenerDestinatariosDeDerivacionFacade(Map<String, String> map) throws TramiteDocuException {
        return this.businessDocumentoInterface.obtenerDestinatariosDeDerivacionBusiness(map);
    }

    public String agregarBorradorFacade(Map<String, Object> mp_documento) throws TramiteDocuException {
        return this.businessDocumentoInterface.agregarBorradorBusiness(mp_documento);
    }

    public String eliminarPositBorradorDeBandejaFacade(Map<String, Object> mp_documento) {
        return this.businessDocumentoInterface.eliminarPositBorradorDeBandejaBusiness(mp_documento);
    }

    public ArrayList<Cls_documento> obtenerTodosDocumentoProyectosPendientesFacade(Map<String, String> map) {
        return this.businessDocumentoInterface.obtenerTodosDocumentoProyectosPendientesBusiness(map);
    }

    public ArrayList<String> obtenerAños() {
        return this.businessDocumentoInterface.obtenerAños();
    }

    public String obtenerErrorUsuarioFacade(Map<String, Object> map) {
        return this.itf_business_error.obtenerErrorUsuarioBusiness(map);
    }

    public Itf_business_error getItf_business_error() {
        return itf_business_error;
    }

    public void setItf_business_error(Itf_business_error itf_business_error) {
        this.itf_business_error = itf_business_error;
    }

    public Cls_documento obtenerCabeceraHistorialDocumentoFacade(Map<String, String> paramMap) throws TramiteDocuException {
       return this.businessDocumentoInterface.obtenerCabeceraHistorialDocumentoBusiness(paramMap);
    }

    public ArrayList<Cls_Posibilidad> obtenerPosibilidadEnvioFacade(String parametro) {
        return this.businessUsuarioInterface.obtenerPosibilidadEnvioBusiness(parametro);
    }

    public ArrayList<Cls_Posibilidad> obtenerPosibilidadProyeccionFacade(String parametro) {
        return this.businessUsuarioInterface.obtenerPosibilidadProyeccionBusiness(parametro);
    }

    public ArrayList<Cls_Posibilidad> obtenerPosibilidadVistoBuenoFacade(String parametro) {
        return this.businessUsuarioInterface.obtenerPosibilidadVistoBuenoBusiness(parametro);
    }
    
}